Ayudantía 0 - Introducción a RStudio

Diego Bernal Soto: diego.bernals@usm.cl

Introducción

Durante las ayudantías utilizaremos el mismo procedimiento que vieron en clases, pero con un enfoque más practico y divertido.

El objetivo principal es reforzar el conocimiento en R, programa que utilizaremos a lo largo del curso para aprender los conceptos estadisticos y aplicaciones con datos reales para realizar conclusiones fundamentadas.

R es el nombre del lenguaje de programación y RStudio es la interfaz.

Una meta adicional es mostrarles git y GitHub.

Git es una herramienta de trabajo para manejar versiones, te ayuda a manejar el codigo compartido de forma eficiente con tu equipo y GitHub es la base para hostear tus proyectos hechos en Git en la web, nos permite el trabajo grupal y subir proyectos de codigo abierto para la comunidad.

A medida que avanzan las ayudantías los invitamos a explorar mas alla de las ayudantías, la curiosidad es la base para buenos analisis, y siempre practiquen lo expuesto ya que eso los hara mejores programadores.Antes de que llegemos a esta etapa, ustedes deben construir cierta fluidez en R.

Hoy empezaremos con lo basico de R y RStudio: La interfaz, leer los datos y comandos basicos.

Metas de aprendizaje

al finalizar la ayudantía, ustedes podran…

  1. Estar familiarizado con la linea de trabajo de R, Rstudio, Git y Github
  2. Ganar experiencia escribiendo un reporte reproducible utilizando Rmarkdown
  3. Ser capaz de crear visualizaciones utilizando ggplot2
  4. Ser capaz de describir la distribución de variables y sus relaciones entre variables

Empecemos!

Set-up SSH key

Para linkear R con GitHub utilizaremos la SSH key. Abajo! Se deja una demostración de los pasos a seguir, pero presenten atención.1 SSH key information

Esta autenticación solo se requiere 1 vez por sistema

Configurar Git

Hay un paso mas para que empezemos a practicar. Especificamente necesitmaos configurar sus git para que RStudio pueda comunicarse con GitHub. Esto solo requiere dos cosillas: Su nombre y su correo :O.

Para hacerlo, ustedes usaran use_git_config() de la biblioteca usethis.

Escriban las siguientes lineas de codigo en la consola

usethis::use_git_config(
  user.name = "nombre de usuario GitHub", 
  user.email = "Email asociado con su cuenta en GitHub"
  )

Por ejemplo, el mio seria.

usethis::use_git_config(
  user.name = "Diego-bernals", 
  user.email = "Diego_bernal77@outlook.es"
  )

Ahora estan listos para interactuar con GitHub por RStudio!

Clonar el repositorio & comenzar un nuevo proyecto de R

Vayan al siguiente link el cual es el del repositorio de nuestro paralelo https://github.com/Diego-bernals/ICS294-Econometr-a-Paralelo-102, Click en el repo Ayudantia_0. Este contiene los principales documentos para realizar la ayudantía.

YAML

En la parte de arriba de sus R Markdown entre las lineas discontinuas se encuentra YAML, que viene de “YAML Ain’t Markup Language”, es un lenguaje de serialización de datos standar para todos los lenguajes de programación. Contiene información meta de su documento.

Commit Changes

Ahora, vayan a el panel de Git arriba.

Si ustedes han echo cambios en el archivo Rmd, deberian poder verlos ahi. Hagan Click en el luego click en Diff. Esto les mostrara las diferencias entre el ultimo commit y el estado actual del documento. Deberían poder ver en rojo cuando borraron algo y en verde cuando agregan.

Cuando realices cambios significativos que deseas subir, debemos preparar estos para ser subidos a tu repositorio remoto.

  1. Stage tus cambios marcando la casilla que corresponda a los archivos que quieres mdificar.
  2. Debes escribir un mensaje significativo relacionado a los cambios que estas realizando en la Commit message box. (Es importante que todo commit que realicen tenga un mensaje)

No tienen que realizar commit despues de todos los cambien que realicen.

Cuando sea significativo el cambio realicen un commit.

Chequen si sus cambios estan en GitHub.

Push Changes

Como ya hicieron cambios es momento de hacerles push a estos cambios en tu repositorio de Github. Click en Push.

Packages

Utilizaremos el siguiente paquete para la ayudantía de hoy.

#install.packages("tydiverse")
library(tidyverse) #meta-package
library(readxl) #Leer hojas de excel

Tidyverse es un meta-package ya que incluye actualmente 8 bibliotecas, utiles para el analisis de datos2 tidyverse.

Datos: “Animal crossing items Bugs & Fishes”

Los datos que veremos hoy provienen del juego Animal Crosing New Horizons, lso datos fueron recolectados de la wiki y de tidytuesday3 tidytuesday.

Carguemos los datos

items <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-05-05/items.csv') #tidytuestaday
fishs <-  read_excel("C:/Users/Diego/Desktop/animal_crossing.xlsx", 
                     sheet = "fish") #Cambiar
bugs <- read_excel("C:/Users/Diego/Desktop/animal_crossing.xlsx", 
                   sheet = "bugs")#Cambiar

Diccionario de variables

variable class description
num_id integer Numerical id - note that some items have multiple rows as they have multiple recipe items
id character Character id
name character Name of the item
category character Category of item (eg furniture, clothing, etc
orderable logical Orderable from catalogue
sell_value integer sell value
sell_currency character sell currency
buy_value integer buy value
buy_currency character buy currency
sources character way to acquire or person/place to acquire from
customizable character Is it customizable?
recipe integer Recipe number
recipe_id character Recipe ID
games_id character game id
id_full character Full character id
image_url character Link to image of item

Veamos el data-set

Una de las primeros pasos que siempre debemos realizar al importar data-sets es revisarlos, para ver si tenemos que realizar ciertos ajustes o cambios para poder trabajar con ellos.

El primer vistazo lo podemos dar con view(df) el cual nos mostrara el data-set completo,pero tambien podemos utilizar head(df) y tail(df) el cual nos imprimira en la consola las primeras 6 filas y el segundo las ultimos 6.

Tipen esto en la consola para que puedan echarle un vistazo!

view(items)
view(fishs)
view(bugs)

Ahora ustedes prueben que les aparece con head(df) y tail(df).

Ejercicios

Deben ir escribiendo los codigos y narrativa en su archivo R markdown, deben ir renderizando constantemente para poder visualizar lo que llevan, commit los cambios que realicen, y push para actualizar los archivo en Github.

Tip

Para no escribir largas lineas de codigo pueden utilizar las pipes %>% o +.

Ejercicio 1

Ya obtuvimos una primera vista de los datos que tenemos, pero requerimos mayor información de estos para poder continuar. Para realizar esto podemos utilizar la función glimpse(df), la cual nos entregara un output mas descriptivo de las variables con las que estamos trabajando.

glimpse(items)

Reemplaze por los otros data-frame y comente en su codigo que obtuvo.

Ejercicio 2

Ahora nos gustaria ver estadistica descriptiva sobre nuestros datos, para esto podemos utilizar la función summary().

summary(items)

Comenten que les parecen los resultados, encontraron missing values?.

Ejercicio 3

Ahora nos gustaria transformar el contenido de una variable esto se puede realizar de distintas maneras, en este caso utilizaremos la función transform(), en especifico queremos cambiar el formato del nombre del objeto en los df fishs bugs para que puedan ser mezclados con los del df items.

fishs <- transform(fishs, Name = gsub(" ", "-", Name))

Realice lo mismo para bugs.

Ejercicio 4

El objetivo es obtener un df que contenga la imagen para cada objeto, para poder realizar esto utilizaremos las pipes ya que son varias lineas de codigo que queremos ejecutar a la vez.

  1. Creamos una lista con los nombres de nuestros insectos
  2. Declaramos la variable en la cual queremos guardar el df
  3. Llamamos al df items en el cual realizaremos las operaciones
  4. Utilizamos la funcion filter() para filtrar el df a través de la columna id solo se quedan los registros que esten en la lista lista_bug
  5. Utilizamos la función select() para seleccionar solo algunas columnas de interes, implicando que el df nuevo ya no tenga las otras columnas
  6. Utilizamos la función rename() para que la columna id se llame Name
lista_bug <- unique(bugs$Name) #Creamos una lista
images_bugs <- items %>%
  filter(id %in% lista_bug) %>%
  select(id,image_url,buy_value) %>% rename(Name = id) 

Realice lo mismo para fishs, importante vera que se repiten valores, busque la forma de limpiar esto.

Ejercicio 5

Ahora que tenemos nuestros df con las imagenes nos gustaria unirlos con el df items para poder obtener un df para poder realizar nuestra exploración de datos.

Para poder realizar la union de dos df podemos utilizar la función merge() o en este caso como estamos trabajando con tidyverse utilizaremos sus prefijos especificos.

Para poder realizar estas uniones los df deben contener la misma columna con el nombre de esta igual.

fish <- left_join(images_fish,fishs, by = "__")
bug <- left_join(images_bugs,bugs, by = "__")

Reemplace los “__” por la columna por la cual realizara la union entre los df.

Ejercicio 6

Transformación de observaciones en ciertas columnas, nos gustaria transformar en variables binarias solamente para obtener el dato de si en esa localidad NH o SH en el mes especifico se encuentra o no el animal.

Para realizar esto utilizaremos la función mutate() la cual nos permite transformar los valores de la columna luego utilizamos la función across() la que nos permite trabajar con varias columnas a la vez las cuales coincidan con algo en especifico en este caso utilizaremos NH y SH. luego utilizamos la funcion matches() para encontrar la expresion regular ^ significa que los caracteres a buscar deben estar al inicio, (NH|SH) debe ser NH o SH, \\. el punto se pone con doble barra para que se interprete como un punto .

Luego el ~if_else() se utiliza el operador ~ para generar una funcion sin nombre la cual en este caso para cada dato de las columnas seleccionadas que sean “NA” les pondra un 0 y para otros que no sean “NA” les pondra un 1.

fish <- fish %>%
  mutate(across(matches("^(NH|SH)\\."), ~if_else(. == "NA", 0,1)))

bug <- bug %>%
  mutate(across(matches("^(NH|SH)\\."), ~if_else(. == "NA", 0,1)))

Ejercicio 7

Ahora que ya limpiamos nuestro df, pasemos a los graficos para comprender las distribuciones de nuestras variables de interes, en este caso nos gustaria ver una visualización de las variables cuantitativas.

ggplot(data =fish,aes(x=Sell))+
  geom_histogram()
ggplot(data = bug, aes(x= Sell)) + 
  geom_histogram()

Utilice la visualización para describir la distribución de las variables, que nos puede comentar de la varianza de los datos, describa la forma de la distribución, esta centrada la distribución, en este caso debemos utilizar la mediana o la media.

Ejercicio 8

Ahora nos gustaria agregar leyendas a nuestro grafico para que se vea mas ordenado y informativo.

Recuerde que la moneda que se utiliza en el juego es…

ggplot(data = fish, aes(x = Sell)) +
  geom_histogram() +
  labs(
    x = "_____",
    y = "_____",
    title = "_____"
  )

Ejercicio 9

Otra forma de ver datos cuantitativos es con graficos de densidad, estos sirven para observar la distribución de nuestra variable de interes.

ggplot(data = fish, aes(x = Sell, fill = Where.How)) +
  geom_density(alpha = 1)

Como se puede observar no podemos conocer mucho de las distribuciones de las variables ya que el color es muy intenso y se sobrepone sobre algunas categorias de nuestros datos, para ello podemos modificar la transparencia de nuestro gráfico, esto lo podemos hacer con el alpha el cual es un valor que va desde 0 a 1, en el cual 1 implica nada de transparencia.

Ejercicio 10

Hay otras formas de ver la relación entre una variable cuantitativa y cualitativa.

ggplot(data=fish, aes(y=Sell, x = Catch.Difficulty, fill =Catch.Difficulty )) +
  geom_boxplot()

Que diferencias encuentra con el plot anterior comente?.

Ejercicio 11

Ahora, veamos la relación entre dos variables cuantitativas, para lograr esto podemos utilizar los graficos de dispersión.

ggplot(data = bug, aes(x=Total.Catches.to.Unlock, y =Sell)) +
  geom_point() + labs(
    x = "Total de capturas para desbloquearlo",
    y = "Precio de venta en tornps",
    title = "Grafico de dispersión"
  )

Agreguele color al gráfico.

Eso fue todo por hoy les dejo el siguiente link para que puedan ver otros tipos de graficos: https://r-graph-gallery.com/